深入探讨:oracle中方案的概念以及方案与数据库的关系
先来看一下他们的定义:
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
1 row created.
咳,说了这么多,给大家举个例子,否则,一切枯燥无味!
例如:我们安装ORACLE数据库时系统默认生成一个名为ORCL的数据库,安装完之后,我们再创建一个名为FATEST的数据库,这个时候,我们以 SYS的身份登陆ORCL数据库,我们发现系统默认的用户(包括SYS/SYSTEM/SYSMEN等等)都有自己相应的方案。此时我们再创建一个用户:TESTUSER,系统会为TESTUSER自动产生一个同名的方案名。然后我们可以创建表AA,并且属于方案TESTUSER;也可以创建同名的表 AA,但是属于SYS。同理,我们可以以TESTUSER用户的身份登陆ORCL操作该数据库其他方案的数据库对象。
SQL> select * from test;
SQL> create table test(name char(10));
Commit complete.
NAME
首先先理解方案的概念,然后再理解方案与数据库的关系。
Table created.NAME
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到 schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决 (Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省 shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
SQL> insert into system.test values('system');
--上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。 通过以上解释,应该很容易明白什么是方案了,我再分析一下方案与数据库之间的关系。
SQL> commit;
SYSTEM TEST
OWNER TABLE_NAME
------------------------------ ------------------------------
Schemas and users help database administrators manage database security.
复制代码 代码如下:
复制代码 代码如下:
A schema is a collection of database objects (used by a user.).SQL> conn system/manager
SCOTT TEST
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
----------
1 row created.
Schema objects are the logical structures that directly refer to the database's data.
上文已经提到过方案是用户使用的数据库对象的集合,一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。
但是我们却不能操作FATEST中的数据库对象。再登陆FATEST创建表TESTUSER.BB、TESTUSER.AA,那么方案TESTUSER的数据库对象包括FATEST数据库中的表AA、BB以及其它默认对象、ORCL的表AA以及其它默认对象。
我们只能以某一身份登陆某一数据库,然后再该数据库中进行操作;但是一个用户登陆某个数据库后,可以在该数据库中操作各个不同方案的数据库对象。也就是说一个数据库是由各种不同方案的数据库对象组成;而一个方案是由不同数据库里的该方案的数据库对象组成。
SQL> create table system.test(name char(10));
Connected.
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过 select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
Table created.
SQL> insert into test values('scott');
从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
SQL> Gruant dba to scott
scott
Session altered.
SQL> select * from test;
system
A user is a name defined in the database that can connect to and access objects.
相关热词: oracle
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/oracle/3536.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
是因为scan的IP问题补占用
时间:2021-01-20
-
还你一个干净的model 2、功
时间:2021-01-20
-
既然 ROWNUM 列并不是真实存
时间:2021-01-20
-
Real Application Clusters
时间:2021-01-20
-
在tools-preferences-connection(
时间:2021-01-20
-
Windows Sever 2012下Oracle 12c安
时间:2021-01-10
-
Oracle安装监听器错误的解
时间:2021-01-07
-
oracle远程连接服务器数据
时间:2021-01-07
热门文章
-
Oracle存储过程编程详解
时间:2020-12-07
-
Azure Queue Storage 基本用法 Azure Storage 之
时间:2020-12-26
-
win10下oracle 11g安装图文教程
时间:2020-12-25
-
oracle 数据库学习 基本结构介绍
时间:2020-12-13
-
Azure File Storage 基本用法 Azure Storage 之 F
时间:2020-12-26
-
windows使用sqlpus连接oracle 数据库的教程图
时间:2020-12-25
-
Window下Oracle Database 11g 发行版2安装教程
时间:2020-12-29
-
Oracle解锁的方式介绍
时间:2020-12-14
-
Oracle 12c Study之Installer Oracle
时间:2021-01-06
-
linux下oracle设置开机自启动实现方法
时间:2020-12-13
